/* key.h */

/* Machine specific keyboard handling */

#ifndef __key_h
#define __key_h

#include "DeskLib:Kbd.h"

/* Which key codes the game is using */
extern int key_left,key_right,key_up,key_down;

/* The actual codes */
/* Cursor keys */
#define cursor_LEFT (25 ^ 0xff)
#define cursor_RIGHT (121 ^ 0xff)
#define cursor_UP (57 ^ 0xff)
#define cursor_DOWN (41 ^ 0xff)
/* 'BBC-style' keys */
#define bkey_LEFT (97 ^ 0xff)
#define bkey_RIGHT (66 ^ 0xff)
#define bkey_UP (79 ^ 0xff)
#define bkey_DOWN (104 ^ 0xff)
/* Other keys */
#define key_ESC (112 ^ 0xff)
#define key_SPACE (98 ^ 0xff)
#define key_L (86 ^ 0xff)
#define key_F12 (29 ^ 0xff)
#define key_ANY -138

/* Whether each of these keys is being pressed
   Equivalent to:
   BOOL pressing_...(void);
 */
#define pressing_left() Kbd_KeyDown(key_left)
#define pressing_right() Kbd_KeyDown(key_right)
#define pressing_up() Kbd_KeyDown(key_up)
#define pressing_down() Kbd_KeyDown(key_down)
#define pressing_esc() Kbd_KeyDown(key_ESC)
#define pressing_l() Kbd_KeyDown(key_L)
#define pressing_space() Kbd_KeyDown(key_SPACE)
#define pressing_f12() Kbd_KeyDown(key_F12)
#define pressing_anything() Kbd_KeyDown(key_ANY)

/* Which set to use */
void key_use_cursors(void);
void key_use_bkeys(void);

/* Flush keyboard buffer */
void key_flush_buffer(void);

/* Read key press without echoing to screen */
int key_inkey(void);

#endif
